Web Development Model তৈরি এবং ব্যবহার গাইড ও নোট

240

Model হলো CodeIgniter এর একটি গুরুত্বপূর্ণ উপাদান, যা ডাটাবেস সংক্রান্ত কাজ পরিচালনা করে। এটি MVC (Model-View-Controller) আর্কিটেকচারের অংশ, যেখানে Model ডাটাবেস থেকে ডেটা রিট্রিভ, ইনসার্ট, আপডেট এবং ডিলিট করার দায়িত্ব পালন করে।


CodeIgniter Model তৈরি

CodeIgniter-এ একটি Model তৈরি করতে আপনাকে app/Models/ ডিরেক্টরিতে একটি ক্লাস তৈরি করতে হবে।

Model ক্লাস তৈরি

  1. app/Models/ ফোল্ডারে একটি নতুন PHP ফাইল তৈরি করুন। উদাহরণ: ProductModel.php
  2. Model ক্লাস কোড:

    <?php
    
    namespace App\Models;
    
    use CodeIgniter\Model;
    
    class ProductModel extends Model {
        protected $table      = 'products'; // ডাটাবেসের টেবিলের নাম
        protected $primaryKey = 'id';       // প্রাইমারি কি
    
        // টেবিলের ফিল্ড যা ইনসার্ট/আপডেট করার সময় ব্যবহার করা যাবে
        protected $allowedFields = ['name', 'price', 'description'];
    
        // স্বয়ংক্রিয়ভাবে created_at এবং updated_at ফিল্ড আপডেট
        protected $useTimestamps = true;
    }
    

বিস্তারিত:

  • protected $table: Model কোন টেবিলের সাথে কাজ করবে তা উল্লেখ করে।
  • protected $primaryKey: প্রাইমারি কি নির্ধারণ করে।
  • protected $allowedFields: ফিল্ড নির্ধারণ করে, যা ইনসার্ট বা আপডেট করার জন্য অনুমোদিত।
  • protected $useTimestamps: যদি টেবিলে created_at এবং updated_at ফিল্ড থাকে, তাহলে এদের স্বয়ংক্রিয়ভাবে আপডেট করে।

Model ব্যবহার

Controller এ Model লোড করা

Controller থেকে Model ব্যবহার করার জন্য:

  1. Controller এ Model ইনস্ট্যান্স তৈরি করুন:

    $productModel = new \App\Models\ProductModel();
    

ডাটাবেস অপারেশন

১. ডেটা রিট্রিভ (Retrieve Data)
public function getAllProducts() {
    $productModel = new \App\Models\ProductModel();
    $products = $productModel->findAll(); // সমস্ত ডেটা রিট্রিভ করে
    return json_encode($products);
}
২. নির্দিষ্ট ডেটা রিট্রিভ
public function getProduct($id) {
    $productModel = new \App\Models\ProductModel();
    $product = $productModel->find($id); // নির্দিষ্ট ID এর ডেটা রিট্রিভ করে
    return json_encode($product);
}
৩. ডেটা ইনসার্ট (Insert Data)
public function addProduct() {
    $productModel = new \App\Models\ProductModel();

    $data = [
        'name'        => 'Sample Product',
        'price'       => 100,
        'description' => 'This is a sample product'
    ];

    $productModel->save($data); // নতুন ডেটা ইনসার্ট করে
    echo "Product added successfully!";
}
৪. ডেটা আপডেট (Update Data)
public function updateProduct($id) {
    $productModel = new \App\Models\ProductModel();

    $data = [
        'id'          => $id,
        'price'       => 120,
        'description' => 'Updated product description'
    ];

    $productModel->save($data); // নির্দিষ্ট ডেটা আপডেট করে
    echo "Product updated successfully!";
}
৫. ডেটা ডিলিট (Delete Data)
public function deleteProduct($id) {
    $productModel = new \App\Models\ProductModel();
    $productModel->delete($id); // নির্দিষ্ট ডেটা ডিলিট করে
    echo "Product deleted successfully!";
}

Query বিল্ডার ব্যবহার

CodeIgniter এর Model ক্লাসে বিল্ট-ইন Query Builder আছে, যা ডাটাবেস অপারেশন সহজ করে।

কাস্টম কোয়েরি ব্যবহার

public function getProductsByPrice($price) {
    $productModel = new \App\Models\ProductModel();

    $products = $productModel->where('price >', $price)->findAll();
    return json_encode($products);
}

নির্দিষ্ট কলাম নির্বাচন

public function getProductNames() {
    $productModel = new \App\Models\ProductModel();

    $names = $productModel->select('name')->findAll();
    return json_encode($names);
}

Model এর সেরা প্র্যাকটিস

  1. Model ক্লাস পরিষ্কার রাখুন: শুধু ডাটাবেস সংক্রান্ত কাজ রাখুন, অতিরিক্ত লজিক যুক্ত করবেন না।
  2. Query Builder ব্যবহার করুন: SQL কোড ম্যানুয়ালি লিখার পরিবর্তে CodeIgniter এর Query Builder ব্যবহার করুন।
  3. Validation ব্যবহার করুন: ডাটা ইনসার্ট বা আপডেট করার সময় Model এর ভ্যালিডেশন ফিচার ব্যবহার করুন।
  4. Timestamps নিশ্চিত করুন: created_at এবং updated_at ফিল্ডগুলো স্বয়ংক্রিয়ভাবে ব্যবহারের জন্য $useTimestamps = true ব্যবহার করুন।

Model এর মাধ্যমে ডাটাবেস সংক্রান্ত কাজগুলোকে সহজ, পরিষ্কার এবং সংগঠিতভাবে পরিচালনা করা যায়। এটি CodeIgniter এর ডেভেলপমেন্টে একটি অপরিহার্য অংশ।

Content added By
Promotion

Are you sure to start over?

Loading...